package com.general.framework.zzyy.threadPool;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;

/**
 * 使用 submit() 方法的常见场景包括：
 *
 * 当需要检查任务的状态或获取结果时。
 * 当需要处理可能被拒绝的任务时。
 * 当需要跟踪任务的进度或取消任务时。
 * 何时使用 execute()
 *
 * 使用 execute() 方法的常见场景包括：
 *
 * 当不需要检查任务的状态或获取结果时。
 * 当任务不应被拒绝时（例如，当线程池无界时）。
 * 当任务不需要进度跟踪或取消时。
 */
public class FixedThreadPoolExample {

    public static void main(String[] args) {

        ExecutorService executorService = Executors.newFixedThreadPool(2);

        // 使用 submit() 提交一个任务并获取结果
        Future<Integer> future = executorService.submit(() -> {
            // 任务代码
            return 42;
        });

        // 使用 execute() 提交一个任务，不获取结果
        executorService.execute(() -> {
            // 任务代码
            System.out.println("任务已完成");
        });

        // 检查任务状态并获取结果
        try {
            Integer result = future.get();
            System.out.println("任务结果：" + result);
        } catch (Exception e) {

            e.printStackTrace();
        }

        executorService.shutdown();
    }
}
